#pragma once

#include <wx/string.h>
#include "plugins/ro/all.h"
#ifndef _USRDLL
#pragma comment(lib, "plugins/ro/lib/roto.lib")
#else
#pragma comment(lib, "../../ro/lib/roto.lib")
#endif

class ICoreAPI 
{
public:
	virtual void _add_gui_item(
									void * item, 
									const wxString &id, 
									void * panel_info,
									const wxString &caption = wxEmptyString, 
									bool addtomenu = true, 
									int manager_num = -1
								) = 0;
	virtual size_t _generate_gui_id() = 0;
	virtual void _print_to_log(const wxString & str) = 0;
	virtual void _append_to_menu(
		int ext_id,
		const wxString &menu,
		const wxString &title,
		const wxString &tooltip = ""
		) = 0;
	virtual void _append_to_toolbar(
		int ext_id, 
		const wxString &title,
		const wxString &tooltip = "",
		const wxString &icon = ""
		) = 0;
	virtual int _get_menu_count() = 0;
	
	virtual roImage * GetImage(int module_id, bool iscopy = false) = 0;
	virtual void SetImage(int module_id, roImage * image, const wxString & description = "") = 0;
	virtual void* GetParentWindow() = 0;

	virtual void _connect(void* target, void* event_type,int id) = 0;

	virtual void _lock() = 0;
	virtual void _unlock() = 0;

	virtual void _reg_pane(const wxString & pane, int ext_id) = 0;
	virtual void* _get_auimanager(int tab = -1) = 0;
	virtual void _update_auimanager(int tab = -1) = 0;
	virtual void _update_pane(void* pane, unsigned int action = 0) = 0;

	virtual void _console(const wxString &command) = 0;
private:	
	virtual bool _load_extensions() = 0;

};
